package com.pro.common.service.sitecontent.model.db;

import com.pro.common.api.CommonConst;
import com.pro.common.api.enums.init.EnumCountry;
import com.pro.common.api.model.BaseConfigModel;
import com.pro.common.api.model.auth.IOpenConfigClass;
import com.pro.framework.api.enums.IEnumToDbDbCode;
import com.pro.framework.javatodb.annotation.JTDField;
import com.pro.framework.javatodb.annotation.JTDTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;

@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "货币")
@JTDTable(entityId = 310, module = CommonConst.Modules.siteContent)
public class Currency extends BaseConfigModel implements IEnumToDbDbCode, IOpenConfigClass {

    @Schema(description = "货币代码")
    private String code;  // 货币代码（如：USD, EUR等）

    @Schema(description = "货币图标")
    private String icon;  // 货币图标（例如：$、€等图标）

    @Schema(description = "货币名称")
    private String currencyName;  // 货币名称（例如：美元、欧元等）

    @Schema(description = "货币中文名称")
    private String cname;  // 货币的中文名称（例如：美元、欧元等）

    @Schema(description = "货币符号")
    private String symbol;  // 货币符号（例如：$、€等）

    @Schema(description = "汇率_美元_转_当前货币")
    private BigDecimal usdToCurrentRate;  // 汇率，相对于美元的兑换比率（例如：1 USD = 6.8 CNY ）

    @Schema(description = "汇率_当前货币_转_美元")
    private BigDecimal currentToUsdRate;  // 汇率，相对于美元的兑换比率（例如：1 CNY = 0.147 USD ）

    @Schema(description = "时区代码")
    private String zoneCode;  // 时区代码，代表该货币所在地区的时区（例如：America/New_York）

    @Schema(description = "货币英文全名")
    private String enName;  // 货币的英文全名（例如：United States Dollar, Euro等）

    @Schema(description = "主要国家")
    private EnumCountry country;  // 主要国家

    @Schema(description = "使用该货币的国家代码列表_逗号分隔")
    @JTDField(entityName = "siteContent.country", mainLength = 2048, javaTypeEnumClassMultiple = true, entityClassLabel = "countryName", entityClassTargetProp = "code")
    private String countries;

    @Schema(description = "是否在管理端显示")
    private Boolean showAdmin;  // 是否在管理端显示此货币配置
}
